import Http from '@/services/api/index';
const Util = require('@/utils/util.js');

Page({
  data: {
    keyword: '', // 搜索关键词
    autoFocus: true, // 自动聚焦
    hotKeywords: ['手机', '电脑', '耳机', '运动鞋', '连衣裙'], // 热门关键词
    searchHistory: [], // 搜索历史
    resultList: [], // 搜索结果列表
    loading: false, // 加载状态
    hasMore: true // 是否有更多数据
  },

  onLoad() {
    // 从缓存中加载搜索历史
    const history = wx.getStorageSync('searchHistory') || []
    this.setData({
      searchHistory: history
    })
  },
  onShow() {},
  // 输入框输入事件
  handleInput: Util.throttle(function (e) {
    const keyword = e.detail.value;
    console.log('搜索关键词:', keyword);
    this.searchApi(keyword); // 调用搜索接口
  }, 500),

  // 清除关键词
  clearKeyword() {
    this.setData({
      keyword: '',
      resultList: []
    })
  },

  // 执行搜索
  handleSearch(e) {
    const keyword = e.detail.value || this.data.keyword
    if (!keyword) return

    this._search(keyword)
  },

  // 使用热门关键词搜索
  searchWithKeyword(e) {
    const keyword = e.currentTarget.dataset.keyword
    this.setData({
      keyword
    })
    this._search(keyword)
  },

  // 实际搜索方法
  _search(keyword) {
    if (this.data.loading) return

    this.setData({
      loading: true
    })

    // 模拟API请求
    wx.showLoading({
      title: '搜索中...'
    })
    setTimeout(() => {
      // 这里应该是真实的API请求
      // 模拟返回数据
      const mockData = this._mockSearchResult(keyword)

      // 更新搜索历史
      this._updateSearchHistory(keyword)

      this.setData({
        resultList: mockData,
        loading: false,
        hasMore: mockData.length >= 10
      })
      wx.hideLoading()
    }, 800)
  },

  // 更新搜索历史
  _updateSearchHistory(keyword) {
    let history = this.data.searchHistory
    // 去重
    history = history.filter(item => item !== keyword)
    // 添加到开头
    history.unshift(keyword)
    // 限制数量
    history = history.slice(0, 10)

    this.setData({
      searchHistory: history
    })
    wx.setStorageSync('searchHistory', history)
  },

  // 清除搜索历史
  clearHistory() {
    this.setData({
      searchHistory: []
    })
    wx.removeStorageSync('searchHistory')
  },

  // 返回上一页
  goBack() {
    wx.navigateBack()
  },

  // 跳转到详情页
  navigateToDetail(e) {
    const id = e.currentTarget.dataset.id
    wx.navigateTo({
      url: `/pages/detail/detail?id=${id}`
    })
  },

  // 模拟搜索数据
  _mockSearchResult(keyword) {
    const mockTitles = [
      `${keyword}新款上市`,
      `2023最新${keyword}`,
      `${keyword}旗舰版`,
      `${keyword}优惠套装`,
      `${keyword}限量版`,
      `专业${keyword}`,
      `${keyword}套装`,
      `${keyword}官方正品`
    ]

    return Array(10).fill(0).map((_, i) => ({
      id: i + 1,
      title: mockTitles[Math.floor(Math.random() * mockTitles.length)],
      cover: `https://picsum.photos/200/200?random=${i}`,
      price: (Math.random() * 1000 + 100).toFixed(2)
    }))
  },
  searchApi(keyword) {
    // 搜索时先检查缓存
    const cachedData = wx.getStorageSync('searchCache');
    if (cachedData && cachedData.keyword === this.data.keyword) {
      this.setData({
        keyword,
        resultList: cachedData.list
      });
      return;
    }
    Http.get('/api/products/search', {
      keyword: keyword
    }, {
      skipAuth: true
    }).then((res) => {
      wx.setStorageSync('searchCache', {
        keyword: this.data.keyword,
        list: res.data
      });
      this.setData({
        keyword,
        resultList: res.data
      })
    }).catch(err => {
      console.log(err)

    });
  },
  onUnload() {
    this.setData({ resultList: [] }); // 避免内存泄漏
  }
})